const cloud = require('wx-server-sdk');

cloud.init({
  env: cloud.DYNAMIC_CURRENT_ENV
});
const db = cloud.database();

// 云函数入口函数
exports.main = async (event, context) => {
  
  // // 查询聊天记录
  // return await db.collection('chatList')
  // .where({
  //   $or: [
  //     { sendId: event.sendId },
  //     { getId: event.sendId } // 确保两个方向的聊天记录都能查询到
  //   ]
  // })
  // .orderBy('time', 'desc')
  let count1 = await db.collection("chatList").aggregate() //选择我的产品表
  .lookup({
    from:"userList", //把用户表关联上
    localField: 'sendId', //产品表的关联字段
    foreignField: 'openid', //用户表的关联字段
    as: 'sendInfo' //匹配的结果作为uapproval相当于起个别名
  })
  .lookup({
    from:"userList", //把用户表关联上
    localField: 'getId', //产品表的关联字段
    foreignField: 'openid', //用户表的关联字段
    as: 'getInfo' //匹配的结果作为uapproval相当于起个别名
  })
  .match({
    $or: [
      { sendId: event.sendId },
      { getId: event.sendId } // 确保两个方向的聊天记录都能查询到
    ]
  })
  .count('expensiveCount')
  .end()

  if (count1.list.length == 0) {
    return {
      list: []
    }
  }
  let count = count1.list[0].expensiveCount
  console.log('count', count)

  let all = []
  for (let i = 0; i < count; i += 20) { //自己设置每次获取数据的量
    let list = await db.collection("chatList").aggregate() //选择我的产品表
    .lookup({
      from:"userList", //把用户表关联上
      localField: 'sendId', //产品表的关联字段
      foreignField: 'openid', //用户表的关联字段
      as: 'sendInfo' //匹配的结果作为uapproval相当于起个别名
    })
    .lookup({
      from:"userList", //把用户表关联上
      localField: 'getId', //产品表的关联字段
      foreignField: 'openid', //用户表的关联字段
      as: 'getInfo' //匹配的结果作为uapproval相当于起个别名
    })
    .match({
      $or: [
        { sendId: event.sendId },
        { getId: event.sendId } // 确保两个方向的聊天记录都能查询到
      ]
    })
    .skip(i)
    .end()
    console.log('list', list.list)
    all = all.concat(list.list);
  }
  // 3,把组装好的数据一次性全部返回
  return {
    list: all
  };
}
